#include "stack.h"
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int      s32Val;

    /* 像C++ 中的new 动作一样，为一个类申请一个类类型的资源*/ /*先初始化对象自身的内存，再初始化对象*/
    struct stack    *p_stack = (struct stack *)malloc(sizeof(struct stack));
    int     *p_buf = (int*)malloc(sizeof(int) * 20);

    stack_init(p_stack, p_buf, 20); /*需要手动调用的构造函数*/

    int i =0;
    for(i = 0; i < 10; i++) {
        stack_push(p_stack, i);
    }


    for(i = 0; i < 10; i++) {
        stack_pop(p_stack, &s32Val);
        printf("[%d]\n", s32Val);
    }


    stack_deinit(p_stack);

    /* 先释放对象本身，后释放对象的资源， 如果先释放对象资源 */
    free(p_stack);
    free(p_buf);

}
